/**
 * 134.加油站
 */
public class Exerciser9 {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int n = gas.length;
        for(int i = 0;i < n;i++) {
            // 枚举每一个数据当成起点进行往后走
            int rest = 0; // 用来统计净收益，也就是从某个位置出发，需要消耗的油量，是正还是负，如果为负，那么就不对
            int step = 0; // 从起点往后走几步
            for(;step < n;step++) {
                int index = (i + step) % n; // 计算当前i起点 走step步数后，在哪个下标下
                rest = rest + gas[index] - cost[index];
                if(rest < 0) {
                    break;
                }
            }
            if(rest >= 0) {
                // 说明从i位置起点，进行往后走，那么可以进行环绕一周
                return i;
            }
            i = i + step;
        }
        return -1;
    }
}
